package com.gta.edu.sdk.util;

import java.util.List;

import com.gta.edu.sdk.common.dto.Page;
import com.gta.edu.sdk.common.dto.PageDataDto;
import com.gta.edu.sdk.config.DateJsonValueProcessor;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

/**
 * @description 通用工具了
 * @author fengya
 * @date 2015-7-30 上午11:08:33
 */
public class CommUtil {
	/**
	 * @description 对分页数据进行封装成json数据的形势
	 * @author fengya
	 * @date 2015-7-30 上午11:08:44
	 * @param page
	 *            分页数据对象
	 * @param isDateFormat
	 *            数据中是否需要日期转换
	 * @return
	 * @return JSONObject 返回的json数据
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static JSONObject getPageJSONData(Page page, boolean isDateFormat) {
		PageDataDto dataJson = new PageDataDto();
		dataJson.setTotal(page.getTotalCount());
		dataJson.setRows(page.getResult());
		if (isDateFormat) {
			DateJsonValueProcessor processor = new DateJsonValueProcessor();
			DateJsonValueProcessor sqlDataProcessor = new DateJsonValueProcessor("yyyy-MM-dd");
			JsonConfig config = new JsonConfig();
			config.registerJsonValueProcessor(java.util.Date.class, processor);
			config.registerJsonValueProcessor(java.sql.Date.class, sqlDataProcessor);
			return JSONObject.fromObject(dataJson, config);
		} else {
			return JSONObject.fromObject(dataJson);
		}
	}
	
	/**
	 * @description 对象进行封装成json数据的形势
	 * @author fengya
	 * @date 2015-7-30 上午11:08:44
	 * @param page
	 *            分页数据对象
	 * @param isDateFormat
	 *            数据中是否需要日期转换
	 * @return
	 * @return JSONObject 返回的json数据
	 */
	public static JSONObject getJSONObjectData(Object obj, boolean isDateFormat) {
		if (isDateFormat) {
			DateJsonValueProcessor processor = new DateJsonValueProcessor();
			DateJsonValueProcessor sqlDataProcessor = new DateJsonValueProcessor("yyyy-MM-dd");
			JsonConfig config = new JsonConfig();
			config.registerJsonValueProcessor(java.util.Date.class, processor);
			config.registerJsonValueProcessor(java.sql.Date.class, sqlDataProcessor);
			return JSONObject.fromObject(obj, config);
		} else {
			return JSONObject.fromObject(obj);
		}
	}
	
	/**
	 * @description 集合进行封装成json数据的形势
	 * @author fengya
	 * @date 2015-7-30 上午11:08:44
	 * @param page
	 *            分页数据对象
	 * @param isDateFormat
	 *            数据中是否需要日期转换
	 * @return
	 * @return JSONObject 返回的json数据
	 */
	public static JSONArray getJSONArrayData(List<?> list, boolean isDateFormat) {
		if (isDateFormat) {
			DateJsonValueProcessor processor = new DateJsonValueProcessor();
			DateJsonValueProcessor sqlDataProcessor = new DateJsonValueProcessor("yyyy-MM-dd");
			JsonConfig config = new JsonConfig();
			config.registerJsonValueProcessor(java.util.Date.class, processor);
			config.registerJsonValueProcessor(java.sql.Date.class, sqlDataProcessor);
			return JSONArray.fromObject(list, config);
		} else {
			return JSONArray.fromObject(list);
		}
	}

	/**
	 * @description 对字符串集合中查找是否包含ID
	 * @author fengya
	 * @date 2015-7-30 下午04:24:26
	 * @param ids
	 * @param id
	 * @return
	 * @return boolean
	 */
	public static boolean contains(String[] ids, String id) {
		if (StringUtil.isNullOrEmpty(id)) {
			return false;
		}
		for (String temp : ids) {
			if (temp.trim().equals(id.trim())) {
				return true;
			}
		}
		return false;
	}
}
